﻿using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Xml;

namespace WeGet;

internal class Program
{
    static readonly string version = "1.1.0";
    static void Main(string[] args)
    {
        try
        {
            if (args[0] == "install")
            {
                try
                {
                    Console.WriteLine("正在获取应用程序" + args[1]);
                    Apps.Install(args[1]);
                    Console.WriteLine(args[1] + "已完成获取");
                }
                catch (Exception e)
                {
                    Main(new string[2] { "error", e.Message });
                    //throw;
                }
            }
            else if (args[0] == "remove")
            {
                Console.WriteLine("正在卸载" + args[1]);
                try
                {
                    Apps.Remove(args[1]);
                    Console.WriteLine(args[1] + " 已卸载完成");
                }
                catch (Exception e)
                {
                    Main(new string[2] { "error", e.Message });
                }

            }
            else if (args[0] == "update")
            {
                Console.WriteLine("正在更新存储库...");
                try
                {
                    Apps.Update();
                }
                catch (Exception e)
                {
                    Main(new string[2] { "error", e.Message });

                }
                Console.WriteLine("存储库更新完成。");
            }
            else if (args[0] == "upgrade")
            {
                Console.WriteLine("正在更新应用程序" + args[1]);
                try
                {
                    Apps.Upgrade(args[1]);
                }
                catch (Exception e)
                {
                    Main(new string[2] { "error", e.Message });
                }
                Console.WriteLine($"应用程序 {args[1]} 已更新完成");
            }
            else if (args[0] == "clone")
            {
                try
                {
                    Apps.Clone(args[1]);
                }
                catch (Exception e)
                {
                    Main(new string[2] { "error", e.Message });
                }

            }
            else if (args[0] == "pull")
            {
                Apps.Pull(args[1]);
            }
            else if (args[0] == "help")
            {
                Console.WriteLine($"WeGet 版本 {version}");
                Console.WriteLine("使用方法: weget [操作] [参数]");
                Console.WriteLine("可用的操作: install [要安装的应用包名] 安装应用,\r\nremove [要移除的应用包名] 移除应用,\r\nupdate 更新存储库,\r\nupgrade [要升级的应用包名] 升级应用,\r\nclone [git 链接] 使用 git clone 命令,\r\npull 使用 git pull 命令");
            }
            else if (args[0] == "error")
            {
                Console.WriteLine("应用程序出现了异常");
                Console.WriteLine($"异常信息：{args[1]}");
            }
            else
            {
                Console.WriteLine("请输入正确的命令");
                Console.WriteLine("输入 weget help 以获取帮助");
            }
        }
        catch (Exception)
        {
            Console.WriteLine("欢迎使用 WeGet 命令行应用程序！");
            Main(new string[1] { "help" });
            //throw;
        }

    }
}
